package com.cetool.autocms.controller.sys;

import com.cetool.autocms.annotation.TokenAnnotation;
import com.cetool.autocms.enumeration.OperateEnum;
import com.cetool.autocms.pojo.dto.sys.MenuCheckBoxDTO;
import com.cetool.autocms.pojo.dto.sys.RoleSelectDTO;
import com.cetool.autocms.pojo.request.sys.QueryRolePermissionRequest;
import com.cetool.autocms.pojo.request.sys.SaveRolePermissionRequest;
import com.cetool.autocms.service.sys.PermissionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.List;

/**
 * 系统管理-权限管理
 *
 * @author 戴越
 * @date 2021/11/25
 */
@RestController
@RequestMapping("/permission")
@Api(tags = "系统管理-权限管理")
public class PermissionController {
    /**
     * 注入权限管理服务
     */
    @Autowired
    private PermissionService permissionService;

    /**
     * 角色下拉列表
     *
     * @return 角色下拉框信息传输实体
     * @author 戴越
     * @date 2021/11/25
     */
    @TokenAnnotation
    @PostMapping("/queryRoleSelect")
    @ApiOperation(value = "角色下拉列表")
    public List<RoleSelectDTO> queryRoleSelect() {
        return permissionService.queryRoleSelect();
    }

    /**
     * 初始化菜单勾选框
     *
     * @return 菜单勾选框信息传输实体
     * @author 戴越
     * @date 2021/11/25
     */
    @TokenAnnotation
    @PostMapping("/queryMenuCheckBox")
    @ApiOperation(value = "初始化菜单勾选框")
    public List<MenuCheckBoxDTO> queryMenuCheckBox() {
        return permissionService.queryMenuCheckBox();
    }

    /**
     * 查询角色权限
     *
     * @param request 查询角色权限请求实体
     * @return 权限列表
     * @author 戴越
     * @date 2021/11/25
     */
    @TokenAnnotation
    @PostMapping("/queryRolePermission")
    @ApiOperation(value = "查询角色权限")
    public List<Integer> queryRolePermission(@Valid @RequestBody QueryRolePermissionRequest request) {
        return permissionService.queryRolePermission(request);
    }

    /**
     * 新增角色权限
     *
     * @param request 新增角色权限请求实体
     * @return 操作信息
     * @author 戴越
     * @date 2021/11/26
     */
    @TokenAnnotation
    @PostMapping("/saveRolePermission")
    @ApiOperation(value = "新增角色权限")
    public OperateEnum saveRolePermission(@Valid @RequestBody SaveRolePermissionRequest request) {
        return permissionService.saveRolePermission(request);
    }
}
